package com.wanxi.service.impl;

import com.wanxi.dao.UserDao;
import com.wanxi.dao.impl.UserDaoImpl;
import com.wanxi.dto.ResultDTO;
import com.wanxi.model.UserModel;
import com.wanxi.service.UserService;
import com.wanxi.util.MD5;

import java.util.List;

public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserDaoImpl();

    public ResultDTO add(UserModel model) {
//1.密码加密
//2.根据当前的用户名去查询数据库是否有，
// 如果有，则提示不能增加，
// 如果没有，则直接增加到数据库

        boolean isHave = userDao.findByName(model);//判断数据库是否有数据
        if (isHave) {
            return ResultDTO.builder()
                    .code(0)
                    .msg("have same name")
                    .count(-2)
                    .build();
        } else {
// 密码加密  123456g
//      最好加密后不能解密  MD5
//            以后，只要出现两次代码相同，则需要提取公共代码
            String mingwen = model.getPassword();
            String anwen = MD5.encoderByMd5(mingwen);
            model.setPassword(anwen);

            return ResultDTO.builder()
                    .code(0)
                    .count(userDao.add(model))
                    .build();
        }
    }

    public ResultDTO update(UserModel model) {

        boolean isHave = userDao.findByName(model);//判断数据库是否有数据
        if (false) {
            return ResultDTO.builder()
                    .code(0)
                    .msg("have same name")
                    .count(-2)
                    .build();
        } else {
// 密码加密  123456g
//      最好加密后不能解密  MD5
//            以后，只要出现两次代码相同，则需要提取公共代码
            String mingwen = model.getPassword();
            String anwen = MD5.encoderByMd5(mingwen);
            model.setPassword(anwen);


            return ResultDTO.builder()
                    .code(0)
                    .count(userDao.update(model))
                    .build();
        }
    }

    public ResultDTO delete(UserModel model) {


        return ResultDTO.builder()
                .code(0)
                .msg("")
                .count(userDao.delete(model))
                .build();
    }

    public ResultDTO findById(UserModel model) {

        return ResultDTO.builder()
                .code(0)
                .msg("")
                .data(userDao.findById(model))
                .build();
    }

    public ResultDTO findAll(UserModel model) {

        return ResultDTO.builder()
                .code(0)
                .msg("")
                .count(userDao.count(model))
                .data(userDao.findAll(model))
                .build();
    }

    @Override
    public ResultDTO login(UserModel userModel) {
        if (userModel.getCode().equals(userModel.getVCode())) {
            String mingwen = userModel.getPassword();
            String anwen = MD5.encoderByMd5(mingwen);
            userModel.setPassword(anwen);
            boolean isHave = userDao.findByNameAndPassword(userModel);
            if (isHave) {
                return ResultDTO.builder()
                        .code(0)
                        .msg("success")
                        .build();
            } else {
                return ResultDTO.builder()
                        .code(0)
                        .msg("error")
                        .build();
            }

        }
        return ResultDTO.builder()
                .code(0)
                .msg("error-code")
                .build();

    }
}
